<template>
  <div class="app-container home">

    <el-row :gutter="20">
      <el-col :sm="24" :lg="24">
        <blockquote class="text-warning" style="font-size: 14px">
          欢迎【{{ name }}】登录系统
        </blockquote>

        <hr />
      </el-col>
    </el-row>

    <el-row :gutter="20">
      <el-col :xs="24" :sm="24" :md="12" :lg="12">
        <el-card class="update-log">
          <div slot="header" class="clearfix">
            <span>项目简介</span>
          </div>
          <div class="body">
            <el-row>
              对于一个完整、优秀的应用系统来说，权限管理是必不可少的一部分。权限管理主要分为认证和授权两部分，
              可以对系统的资源进行控制、管理，对登录用户进行验证和权限鉴定，保障应用系统资源和信息的安全。
              目前，许多权限管理系统存在与项目的核心业务耦合太高、复用性差等问题， 不能很好地应用于微服务架构。
              这些系统默认使用的是基于Session 的认证方式，而基于 Session 认证的权限管理系统在当前分布式环境下存在一系列问题，
              如服务器开销大、性能低、容易受到跨站伪造攻击以及不能跨平台等。针对以上问题，基于角色的访问控制模型（Role-Based Access Control，RBAC）嵌入到
              Spring Security 中实现前后端分离，利用JWT携带权限信息实现用户的权限验证。
              这样能很好地与项目解耦合，将权限管理系统模块化，使之能嵌入到任何一个需要权限管理的项目中。
            </el-row>
          </div>
        </el-card>
      </el-col>

      <el-col :xs="24" :sm="24" :md="12" :lg="12">
        <el-card class="update-log">
          <div slot="header" class="clearfix">
            <span>当前登录用户详细信息</span>
          </div>
          <el-collapse accordion>
            <el-collapse-item title="基本信息">
              <ul>
                <li style="list-style:none;">用户名: {{ name }}</li>
                <li style="list-style:none;">角色信息:{{roles}}</li>
                <li style="list-style:none;">头像地址:{{avatar}}</li>
              </ul>
            </el-collapse-item>
            <el-collapse-item title="权限信息">
              <ul>
                <li v-for="permission in permissions" :key="role"  style="list-style:none;">{{ permission }}</li>
              </ul>
            </el-collapse-item>
            <el-collapse-item title="身份凭证">
              <ul>
                <li style="list-style:none;">{{token}}}</li>
              </ul>
            </el-collapse-item>
          </el-collapse>
        </el-card>
      </el-col>
    </el-row>
<!--    第二行-->
    <el-row :gutter="20">
      <el-col :xs="24" :sm="24" :md="12" :lg="12">
        <el-card class="update-log">
          <div slot="header" class="clearfix">
            <span>主要功能</span>
          </div>
          <div class="body">
            <el-row>
              <el-col :span="24">
                <ul>
                  <li>用户管理：用户是系统操作者，该功能主要完成系统用户配置。</li>
                  <li>部门管理：配置系统组织机构，树结构展现，并且支持数据权限。</li>
                  <li>岗位管理：配置系统用户所属担任职务。</li>
                  <li>菜单管理：配置系统菜单，操作权限，按钮权限标识等。</li>
                  <li>角色管理：角色菜单权限分配、设置角色按机构进行数据范围权限划分。</li>
                  <li>操作日志：系统正常操作日志记录和查询；系统异常信息日志记录和查询。</li>
                  <li>登录日志：系统登录日志记录查询包含登录异常。</li>
                  <li>统计分析：用户信息的统计，以eChars图表的形式展示</li>
                  <li>个人信息：图片上传功能，直接将图片上传到图片服务器</li>
                </ul>
              </el-col>
            </el-row>
          </div>
        </el-card>
      </el-col>

      <el-col :xs="24" :sm="24" :md="12" :lg="12">
        <el-card class="update-log">
          <div slot="header" class="clearfix">
            <span>主要技术栈</span>
          </div>
          <div class="body">
            <el-row>
              <el-col :span="12">
                <h4>后端技术</h4>
                <ul>
                  <li>SpringBoot</li>
                  <li>Spring Security</li>
                  <li>JWT</li>
                  <li>MyBatis</li>
                  <li>Qiniu</li>
                  <li>POi</li>
                  <li>...</li>
                </ul>
              </el-col>
              <el-col :span="12">
                <h4>前端技术</h4>
                <ul>
                  <li>Vue</li>
                  <li>Vuex</li>
                  <li>Axios</li>
                  <li>Vue-Router</li>
                  <li>Element-ui</li>
                  <li>Vue-element-admin</li>
                  <li>...</li>
                </ul>
              </el-col>
            </el-row>
          </div>
        </el-card>
      </el-col>
    </el-row>

  </div>
</template>

<script>
import { mapGetters } from 'vuex'

export default {
  name: "Index",
  // 从store中获取登录用户名和权限信息
  computed: {
    ...mapGetters([
      'name',
      'permissions',
      'roles',
      'avatar',
      'token'
    ])
  }
};
</script>

<style scoped lang="scss">
.home {
  blockquote {
    padding: 10px 20px;
    margin: 0 0 20px;
    font-size: 17.5px;
    border-left: 5px solid #eee;
  }
  hr {
    margin-top: 20px;
    margin-bottom: 20px;
    border: 0;
    border-top: 1px solid #eee;
  }
  .col-item {
    margin-bottom: 20px;
  }

  ul {
    padding: 0;
    margin: 0;
  }

  font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 13px;
  color: #676a6c;
  overflow-x: hidden;

  ul {
    list-style-type: none;
  }

  h4 {
    margin-top: 0px;
  }

  h2 {
    margin-top: 10px;
    font-size: 26px;
    font-weight: 100;
  }

  p {
    margin-top: 10px;

    b {
      font-weight: 700;
    }
  }

  .update-log {
    ol {
      display: block;
      list-style-type: decimal;
      margin-block-start: 1em;
      margin-block-end: 1em;
      margin-inline-start: 0;
      margin-inline-end: 0;
      padding-inline-start: 40px;
    }
  }
}
</style>

